package com.booksystem.controller;

import com.booksystem.common.RestResult;
import com.booksystem.dto.ProductRankQuery;
import com.booksystem.dto.ReportQuery;
import com.booksystem.service.ReportService;
import com.booksystem.vo.ProductRankVO;
import com.booksystem.vo.SalesReportVO;
import com.booksystem.vo.UserBehaviorAnalysisVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *   数据统计分析控制器
 * </p>
 * @author 段伟豪
 */
@Slf4j
@RestController
@RequestMapping("/report")
@Api(tags = "数据统计分析")
public class ReportController {

    @Autowired
    private ReportService reportService;

    /**
     * 生成销售报表
     *
     * @param query 查询参数
     * @return 统一响应结果
     */
    @PostMapping("/sales-report")
    @ApiOperation("生成销售报表")
    public RestResult<SalesReportVO> generateSalesReport(@RequestBody @Valid ReportQuery query) {
        return reportService.generateSalesReport(query);
    }

    /**
     * 分析用户行为模式
     *
     * @param query 查询参数
     * @return 统一响应结果
     */
    @PostMapping("/user-behavior")
    @ApiOperation("分析用户行为模式")
    public RestResult<UserBehaviorAnalysisVO> analyzeUserBehavior(@RequestBody @Valid ReportQuery query) {
        return reportService.analyzeUserBehavior(query);
    }

    /**
     * 获取商品热销排行
     *
     * @param query 查询参数
     * @return 统一响应结果
     */
    @PostMapping("/product-rank")
    @ApiOperation("获取商品热销排行")
    public RestResult<List<ProductRankVO>> getProductRank(@RequestBody @Valid ProductRankQuery query) {
        return reportService.getProductRank(query);
    }
}